import scrapy
from scrapy import signals
from scrapy.mail import MailSender
from pydispatch import dispatcher


class ExamSpider(scrapy.Spider):
    name = 'exam'
    # allowed_domains = ['exam.com']
    start_urls = ['https://hljcg.hlj.gov.cn/provide/notice?noticetype=1']


    mailers = MailSender(smtphost="smtp.qq.com",  # 发送邮件的服务器
                         mailfrom="919841483@qq.com",  # 邮件发送者
                         smtpuser="919841483@qq.com",  # 用户名
                         smtppass="xlbxldrlqlyfbbfd",  # 发送邮箱的密码不是你注册时的密码，而是授权码！！！切记！
                         smtpport=25  # 端口号
                         )  # 初始化邮件模块

    def __init__(self):
        """ 监听信号量 """
        super(ExamSpider, self).__init__()  # 当收到spider_closed信号的时候，调用下面的close方法来发送通知邮件
        dispatcher.connect(self.spider_closed, signals.spider_closed)

    def spider_closed(self, spider, reason):
        # 上方的信号量触发这个方法
        stats_info = self.crawler.stats._stats  # 爬虫结束时控制台信息
        body = "爬虫[%s]已经关闭，原因是: %s.\n以下为运行信息：\n %s" % (spider.name, reason, stats_info)
        subject = "[%s]爬虫关闭提醒" % spider.name
        self.mailers.send(to={"2726903703@qq.com"},
                     subject=subject,
                     body=body)

    def parse(self, response):
        print(response.url)

        # 通过语句来提取数据   不要需要处理JS  结合自动化抓取




